/**
 * 应用相关的 IPC 客户端模块
 */
import { invoke, send } from '../ipc'

/**
 * 获取应用信息
 * @returns 应用信息对象
 */
export async function getAppInfo(): Promise<{
  version: string
  name: string
  appPath: string
  locale: string
  isPackaged: boolean
  platform: string
  arch: string
  osVersion: string
  osName: string
}> {
  return await invoke('get-app-info')
}

/**
 * 退出应用
 */
export function quitApp(): void {
  send('quit-app')
}

/**
 * 重启应用
 */
export function restartApp(): void {
  send('restart-app')
}

/**
 * 打开外部链接
 * @param url 链接地址
 * @returns 是否成功
 */
export async function openExternalLink(url: string): Promise<{ success: boolean, error?: string }> {
  return await invoke('open-external-link', url)
}

/**
 * 打开文件选择对话框
 * @param options 对话框选项
 * @returns 对话框结果
 */
export async function showOpenDialog(options: Electron.OpenDialogOptions): Promise<Electron.OpenDialogReturnValue> {
  return await invoke('show-open-dialog', options)
}

/**
 * 打开保存文件对话框
 * @param options 对话框选项
 * @returns 对话框结果
 */
export async function showSaveDialog(options: Electron.SaveDialogOptions): Promise<Electron.SaveDialogReturnValue> {
  return await invoke('show-save-dialog', options)
}

/**
 * 显示消息对话框
 * @param options 对话框选项
 * @returns 对话框结果
 */
export async function showMessageBox(options: Electron.MessageBoxOptions): Promise<Electron.MessageBoxReturnValue> {
  return await invoke('show-message-box', options)
} 